package com.xbongbong.paas.service;

import com.xbongbong.paas.pojo.dto.ReturnCustomer2PublicAsyncDTO;
import com.xbongbong.paas.pojo.dto.ReturnCustomer2PublicDTO;
import com.xbongbong.paas.pojo.vo.ReturnCustomer2PublicAsyncVO;
import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.paas.toolbox.wrap.XbbResponse;

import java.util.List;

/**
 * @author yanglei
 * @ProjectName xbb-pro
 * @Description: 公海高级模式 - 转移、退回定时脚本Service层
 * @date 2022/5/9 10:59
 */
public interface TransferBackRuleScriptService {


    /**
     * 校验参数
     * @param returnCustomer2PublicDTO
     * @return
     * @throws XbbException
     */
    ReturnCustomer2PublicAsyncDTO verifyParam(ReturnCustomer2PublicDTO returnCustomer2PublicDTO) throws XbbException;



    /**
     * 客户公海高级退回规则脚本异步方法
     *
     * @param returnCustomer2PublicAsyncDTO 客户公海高级规则脚本入参
     * @return Integer
     * @throws XbbException 业务异常
     * @version v1.0
     * @since v1.0
     */
    XbbResponse<ReturnCustomer2PublicAsyncVO> returnCustomer2PublicSeniorAsync(ReturnCustomer2PublicAsyncDTO returnCustomer2PublicAsyncDTO) throws XbbException;


    /**
     * 线索公海高级退回规则脚本异步方法
     *
     * @param returnCustomer2PublicAsyncDTO 客户公海高级规则脚本入参
     * @return Integer
     * @throws XbbException 业务异常
     * @version v1.0
     * @since v1.0
     */
    XbbResponse<ReturnCustomer2PublicAsyncVO> returnClue2PublicSeniorAsync(ReturnCustomer2PublicAsyncDTO returnCustomer2PublicAsyncDTO) throws XbbException;



    /**
     * 客户公海高级转移规则脚本异步方法
     * @param returnCustomer2PublicAsyncDTO
     * @return
     * @throws XbbException
     */
    XbbResponse<ReturnCustomer2PublicAsyncVO> transferCustomer2PublicSeniorAsync(ReturnCustomer2PublicAsyncDTO returnCustomer2PublicAsyncDTO) throws XbbException;


    /**
     * 线索公海高级转移规则脚本异步方法
     * @param returnCustomer2PublicAsyncDTO
     * @return
     * @throws XbbException
     */
    XbbResponse<ReturnCustomer2PublicAsyncVO> transferClue2PublicSeniorAsync(ReturnCustomer2PublicAsyncDTO returnCustomer2PublicAsyncDTO) throws XbbException;


    /**
     * 公海高级模式 - 更新最新的标签
     * @param corpid 公司id
     * @param refIds 客户或者线索ids
     * @param businessType 业务类型
     * @param formId 业务类型
     * @throws XbbException
     */
    void deletePublicSeniorTag(String corpid, List<Long> refIds, Integer businessType, Long formId) throws XbbException;
}
